﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entity;
using System.Data.SqlClient;
using System.Data;
using System.Data.Sql;
using System.Data.SqlTypes;

namespace DAL
{
    public class CursoWrapper: BaseWrapper, IWrapper<Curso>
    {
        //Se lerem o cometário: Não vou poder ir hoje para o curso, porem estou em casa até +- 2 da tarde, então podem me passar coisas para fazer. Qq coisa estou no msn:ditticio@msn.com
        //Rafael - 18/05

        public List<Curso> GetAll()
        {
            throw new NotImplementedException();
        }

        public Curso GetById(int id)
        {
            throw new NotImplementedException();
        }

        public bool Insert(Curso entity)
        {
            bool status = false;
            SqlConnection cn = new SqlConnection(ConnectionString());
            SqlCommand cmd = new SqlCommand("SP_CURSO_INSERT", cn);
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameter parametro = new SqlParameter("@IDCURSO", DbType.UInt32);
            parametro.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(parametro);
    


            cmd.Parameters.AddWithValue("IDCURSO", entity.IDCURSO);
            cmd.Parameters.AddWithValue("IDESCOLA"   ,entity.IDESCOLA   );
            cmd.Parameters.AddWithValue("NOMECURSO"  ,entity.NOMECURSO  );
            cmd.Parameters.AddWithValue("VALOR"		 ,entity.VALOR		);
            cmd.Parameters.AddWithValue("DURACAO"	 ,entity.DURACAO	);
            
            try
            {
                cn.Open();
                if (cmd.ExecuteNonQuery() > 0)
                    status = true;
        entity.IDCURSO = int.Parse(cmd.Parameters[0].Value.ToString());
            }
            catch (SqlException ex)
            {
                Messages += "Erro na inserção de dados\n";
                Messages += ex.Message.ToString();

            }
            finally
            {
                if (cn.State != ConnectionState.Closed)
                    cn.Close();
            }

            return status;


        }

        public bool Update(Curso entity)
        {
            bool status = false;
            SqlConnection cn = new SqlConnection(ConnectionString());
            SqlCommand cmd = new SqlCommand("SP_CURSO_UPDATE", cn);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("IDCURSO", entity.IDCURSO);
            cmd.Parameters.AddWithValue("IDESCOLA", entity.IDESCOLA);
            cmd.Parameters.AddWithValue("NOMECURSO", entity.NOMECURSO);
            cmd.Parameters.AddWithValue("VALOR", entity.VALOR);
            cmd.Parameters.AddWithValue("DURACAO", entity.DURACAO);

            try
            {
                cn.Open();
                if (cmd.ExecuteNonQuery() > 0)
                    status = true;

            }
            catch (SqlException ex)
            {
                Messages += "Erro na inserção de dados\n";
                Messages += ex.Message.ToString();

            }
            finally
            {
                if (cn.State != ConnectionState.Closed)
                    cn.Close();
            }

            return status;
        }

        public bool Delete(Curso entity)
        {
            bool status = false;
            SqlConnection cn = new SqlConnection(ConnectionString());
            SqlCommand cmd = new SqlCommand("SP_CURSO_DELETE", cn);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("IDCURSO", entity.IDCURSO);

            try
            {
                cn.Open();
                if (cmd.ExecuteNonQuery() > 0)
                    status = true;

            }
            catch (SqlException ex)
            {
                Messages += "Erro na inserção de dados\n";
                Messages += ex.Message.ToString();

            }
            finally
            {
                if (cn.State != ConnectionState.Closed)
                    cn.Close();
            }

            return status;
        }
    }
}
